1 Introduction

Attention Deficit Hyperactivity Disorder (ADHD), known for low attention span and hyperactivity, has been a centre of attention in research and public discourse for a long time (Toplak et al., 2006). Following the COVID-19 pandemic, there was a notable global rise in ADHD symptoms (Rogers et al., 2023). It is thought that the pandemic lockdowns, which forced people to study and work from home, had negatively affected their attention span.

It this report, I will analyse trends in ADHD medication prescriptions in Scotland by comparing data from the pre-COVID-19 period and post-COVID-19 period. The focus is on the number of prescribed doses, which will allow us to see changes over this period. The aim of this report is to answer the question: Has there been an increase in ADHD medication prescription that could reflect an increase in attention-related challenges following pandemic lockdowns?

2 Aims

The overall aim is to uncover trends in ADHD medication prescription in Scotland pre- and post-COVID-19 lockdowns. The report will show:

  1. An overview of ADHD medication prescriptions from January 2019 to August 2024
    • Is there an increasing trend in ADHD medication prescription?
    • Which type of ADHD medication is the most common?
  2. A map of overall prescriptions in the year 2019 (pre-COVID-19 lockdowns) and the year 2023 (post-COVID-19 lockdowns).
    • What is the trend of ADHD medication prescription between the different regions of Scotland?
    • Which regions of Scotland saw the highest increase in ADHD medication prescription?
  3. A table of most prescribed ADHD medications in the past year in Lothian area.
    • Which type and what dosage of ADHD medication is the most common now?

3 Report

3.1 ADHD medications licensed by NHS

There are five medications that have been licensed by NHS for the treatment of ADHD in the UK. These medications are:

  • Atomoxetine
  • Dexamfetamine
  • Guangacine
  • Lisdexamfetamine
  • Methylphenidate

3.1.1 Load packages

# load packages using shelf function from librarian package
librarian::shelf(tidyverse, janitor, sf, here, kableExtra, gt, patchwork, rjson, plotly)

3.1.2 Load data and filter for ADHD medications

# if the file "prescriptions.csv" does not exist in the data folder, create it and save it into the data folder
if (!file.exists(file = here("data", "prescriptions.csv"))) {
  json <- fromJSON(file = "https://www.opendata.nhs.scot/api/3/action/package_show?id=prescriptions-in-the-community")
  # get all the URLs of the dataframes from the json file
  urls <- data.frame(url = unlist(map(json$result$resources, function(resource){resource$url}))) %>% 
    # filter for dataframes that are set between January 2019 and August 2024
    mutate(date = as.numeric(str_extract(url, "/pitc(\\d+)\\.csv$", group = 1))) %>% 
    filter(date > 201812 & date < 202409)
  
  # read the dataframes from URLs
  prescriptions <- lapply(urls$url, function(url) {
    read_csv(url) %>% 
      clean_names() %>% 
      # filter for the five types of medications licensed by NHS for the treatment of ADHD
      filter(str_detect(bnf_item_description, "ATOMOXETINE|DEXAMFETAMINE|GUANFACINE|LISDEXAMFETAMINE|METHYLPHENIDATE")) %>% 
      # change the name of the "hbt2014" column into "hbt" in dataframes from the year 2019
      rename(any_of(c("hbt" = "hbt2014"))) %>%
      # separate bnf_item_description string into the name of medication and its dosage
      mutate(medication_name = word(bnf_item_description, sep = "[ _]"),
             dose = word(bnf_item_description, start = 2, end = -1, sep = "[ _]")) %>% 
      select(hbt, medication_name, dose, number_of_paid_items, paid_quantity, paid_date_month)
  })

  # join all dataframes into one dataframe
  prescriptions <- prescriptions %>% 
    reduce(full_join)
  
  # save the dataframe into the data file
  write_csv(prescriptions, file = here("data", "prescriptions.csv"))
} else {
  prescriptions <- read.csv(here("data", "prescriptions.csv"))
}

3.1.3 Look at the 5 year overview of prescriptions of ADHD medications

# create a function that creates a line graph with changeable y axis title, y axis type, and visibility of legend
create_graph <- function(y_title, y_type = NULL, show_legend = FALSE) {
  x <- prescriptions %>%
    # change paid_date_month string into date
    mutate(paid_date_month = ym(paid_date_month)) %>%
    # get a sum of prescribed doses of the 5 types of ADHD medications per month
    group_by(medication_name, paid_date_month) %>% 
    summarise(paid_quantity = sum(paid_quantity)) %>%
    # make an interactive plot using plotly library
    plot_ly(x = ~paid_date_month,
            y = ~paid_quantity,
            type = "scatter",
            mode = "lines",
            split = ~medication_name,
            color = ~medication_name,
            legendgroup = ~medication_name,
            showlegend = show_legend) %>%
    layout(xaxis = list(title = "Date (month and year)"),
           yaxis = list(title = y_title, type = y_type))
}

# create a normal graph and a log graph
overview_normal <- create_graph("Prescribed medication doses")
overview_log <- create_graph("Log of prescribed medication doses", "log", TRUE)

# join the two graphs using subplot function from plotly
subplot(overview_normal, overview_log, shareX = TRUE, titleX = TRUE, titleY = TRUE, margin = 0.05) %>% 
  layout(title = "Number of Prescribed Doses of 5 Types of ADHD Medications<br>from January 2019 to August 2024",
         hovermode = "x unified",
         legend = list(orientation = 'h', y = -0.2, borderwidth = 1, bordercolor = "black", xanchor = "center", x = 0.5))

The first graph shows the number of prescribed doses of each of the five ADHD medications. As Methylphenidate is clearly the most popular ADHD medication and Atomoxetine and Dexamfetamine the least popular medications, the difference makes it difficult to discern trends among the less common medication. The second graph uses a logarithmic scale for the number of doses, which enhances visibility of smaller changes within each medication. This adjustment allows clearer identification of trends that were not apparent in the first graph.

The data indicate that Methylphenidate has shown the highest increase in prescriptions over the years. Although Atomoxetine, Dexamfetamine, and Guanfacine have also seen a steady rise, their growth is not as pronounced as that of Methylphenidate. Notably, in May 2023, prescriptions for Atomoxetine and Dexamfetamine declined, coinciding with the introduction of Lisdexamfetamine to the market. This suggests that Lisdexamfetamine replaced Atomoxetine and Dexamfetamine on the market.

A key limitation of this analysis is the lack of consideration for population changes in Scotland. Population growth could be greater than the increase in ADHD medication prescriptions, potentially skewing the observed trends. To address this, a per capita analysis is necessary to provide a clearer understanding of prescription patterns relative to population dynamics.

3.2 Differences of ADHD prescriptions per capita in Scottish Health Boards in 2019 and 2023

To further explore the increase in ADHD medication prescriptions in Scotland, I will compare the number of prescribed doses before and after the COVID-19 pandemic. This analysis will also account for population differences across Scottish Health Boards. For the pre-COVID comparison, I will use 2019 population data, representing the year just before the first lockdown. For the post-COVID period, 2023 will be the reference year, as complete data for 2024 is not yet available.

3.2.1 Load dataframes with Scottish Health Board names, populations, and shapefile

# ref: https://www.opendata.nhs.scot/dataset/9f942fdb-e59e-44f5-b534-d6e17229cc7b/resource/652ff726-e676-4a20-abda-435b98dd7bdc/download/hb14_hb19.csv
hb_names <- read_csv(here("data", "hb_names.csv")) %>% 
  clean_names() %>% 
  select(hb, hb_name)

# ref: https://www.opendata.nhs.scot/dataset/7f010430-6ce1-4813-b25c-f7f335bdc4dc/resource/27a72cc8-d6d8-430c-8b4f-3109a9ceadb1/download/hb2019_pop_est_14102024.csv
hb_population <- read_csv(here("data", "hb_population.csv")) %>% 
  clean_names() %>% 
  filter(sex == "All") %>% 
  select(year, hb, all_ages)

# ref: https://spatialdata.gov.scot/geonetwork/srv/api/records/f12c3826-4b4b-40e6-bf4f-77b9ed01dc14
NHS_healthboards <- st_read(here("data", "NHS_healthboards_2019.shp")) %>% 
  clean_names()

3.2.2 Join the prescription dataframe with population file and the shapefile

map_data <- prescriptions %>% 
  mutate(paid_date_month = year(ym(paid_date_month))) %>% 
  full_join(hb_population, by = c("hbt" = "hb", "paid_date_month" = "year")) %>% 
  filter(paid_date_month %in% c("2019", "2023"),
         !(hbt %in% c("S92000003", "S08000021", "S08000023"))) %>% 
  group_by(hbt, all_ages, paid_date_month) %>% 
  summarise(paid_quantity = sum(paid_quantity)) %>% 
  mutate(ratio = paid_quantity / all_ages) %>% 
  full_join(NHS_healthboards, by = c("hbt" = "hb_code"))

I excluded the health boards S92000003, S08000021, and S08000023 from the dataframe. S92000003 represents ambulance services and is not relevant to this analysis. Meanwhile, S08000021 and S08000023 correspond to the inactive Greater Glasgow and Clyde and Lanarkshire health boards, which have been replaced by S08000031 and S08000032, respectively.

3.2.3 Map of ADHD prescriptions per capita in 2019 and 2023

# create a figure with two maps
map_figure <- map_data %>% 
  ggplot(aes(fill = ratio, geometry = geometry, text = paste(hb_name, "had a ratio of", format(ratio, digits = 2), "in", paid_date_month))) +
  geom_sf(lwd = 0.1) +
  scale_fill_distiller(palette = 16, direction = 1) + 
  theme_void() +
  theme(plot.title = element_text(size=11)) +
  facet_wrap(~paid_date_month) +
  labs(title = "Maps Showing Prescribed Doses of ADHD Medications per Health Board Populations")

# display the figure as an interactive map using ggplotly function from plotly library
map_figure %>%
  ggplotly(tooltip = "text") %>%
  style(hoverlabel = list(bgcolor = "white"), hoveron = "fill")

The ratio of prescribed ADHD medication doses to population has increased in most health boards across Scotland. The only exception is Tayside, where the ratio decreased from 1.02 to 0.904. Grampian currently has the highest ratio, with 1.33 doses prescribed per person, indicating a significant concentration of ADHD medication prescriptions in this region.

3.2.4 Table

The next step will focus on a detailed analysis of NHS Lothian, as I live in Edinburgh and have a particular interest in this Health Board. I plan to examine the data more closely to determine which of the five ADHD medications is the most commonly prescribed in this region. Additionally, I will analyze the data to identify the most frequently prescribed dosages for each medication, providing a deeper understanding of prescription trends within NHS Lothian.

past_year_prescriptions <- prescriptions %>%
  filter(paid_date_month > 202308 & paid_date_month < 202409) %>% 
  full_join(hb_names, by = c("hbt" = "hb")) %>% 
  full_join(hb_population %>% filter(year == "2023"), by = c("hbt" = "hb")) %>% 
  filter(hb_name == "NHS Lothian") %>% 
  group_by(medication_name, dose, all_ages) %>% 
  summarise(paid_quantity = sum(paid_quantity),
            number_of_paid_items = sum(number_of_paid_items)) %>% 
  mutate(paid_quantity = (paid_quantity / all_ages) * 10000,
         number_of_paid_items = (number_of_paid_items / all_ages) * 10000) %>% 
  ungroup()

past_year_prescriptions %>% 
  select(medication_name, dose, number_of_paid_items, paid_quantity) %>% 
  group_by(medication_name) %>% 
  slice_max(paid_quantity, n = 3) %>%
  arrange(desc(paid_quantity)) %>%
  
  gt() %>% 
  tab_header(title = "Top 3 Most Prescribed ADHD Medications of Each Type in The Past Year",
             subtitle = "Data from NHS Lothian") %>% 
  tab_style(style = cell_text(weight = "bold"),
            locations = list(cells_title(groups = "title"), cells_row_groups(groups = everything()))) %>%
  
  tab_spanner(label = "Rate per 10k population",
              columns = c(number_of_paid_items, paid_quantity)) %>% 
  tab_style(style = cell_text(style = "italic"),
            locations = cells_column_spanners(spanners = everything())) %>% 
  
  cols_label(medication_name = "Medication Name",
             dose = "Dose",
             number_of_paid_items = "Number of Paid Items",
             paid_quantity = "Number of Prescriptions") %>% 
  
  fmt_number(columns = c(number_of_paid_items, paid_quantity), decimals = 2) %>% 
  
  summary_rows(columns = c(number_of_paid_items, paid_quantity), 
               fns = list("Average" = ~mean(., na.rm = TRUE)),
               fmt = list(~ fmt_number(., decimals = 2))) %>% 
  grand_summary_rows(columns = c(number_of_paid_items, paid_quantity), 
                     fns = list("Overall Average" = ~mean(., na.rm = TRUE)),
                     fmt = list(~ fmt_number(., decimals = 2))) %>% 
  
  opt_row_striping()
Top 3 Most Prescribed ADHD Medications of Each Type in The Past Year
Data from NHS Lothian
Dose
Rate per 10k population
Number of Paid Items
METHYLPHENIDATE
10MG TABLETS 50.06 3,466.82
5MG TABLETS 37.28 2,327.26
20MG TABLETS 15.41 1,099.76
Average 34.25 2,297.95
DEXAMFETAMINE
5MG TABLETS 15.19 1,560.51
5MG/5ML ORAL SOLUTION SUGAR FREE 0.22 34.27
5MG/5ML ORAL LIQUID 0.02 4.90
Average 5.14 533.23
ATOMOXETINE
40MG CAPSULES 7.62 287.83
60MG CAPSULES 5.16 205.38
10MG CAPSULES 3.45 191.70
Average 5.41 228.30
LISDEXAMFETAMINE
30MG CAPSULES 0.05 2.13
40MG CAPSULES 0.05 1.52
50MG CAPSULES 0.02 0.61
Average 0.04 1.42
GUANFACINE
1MG MODIFIED-RELEASE TABLETS 0.01 0.61
3MG MODIFIED-RELEASE TABLETS 0.01 0.61
Average 0.01 0.61
Overall Average 9.61 655.99

4 Conclusion

Here will be a conclusion soon.

5 References

Rogers, M.A. and MacLean, J. (2023) ‘ADHD symptoms increased during the COVID-19 pandemic: A meta-analysis’, Journal of Attention Disorders, 27(8), pp. 800–811. doi:10.1177/10870547231158750.

Toplak, M.E., Dockstader, C., Tannock, R. (2006) ‘Temporal information processing in ADHD: Findings to date and New Methods’, Journal of Neuroscience Methods, 151(1), pp. 15–29. doi:10.1016/j.jneumeth.2005.09.018.